Мы уже несколько раз касались работы с реестром, но ни разу не работали с классом CRegKey. А он на мой взгляд наиболее удачно сделан. Давайте создадим приложение на базе диалогового окна. Поместим туда элемент управления Edit и две кнопки для тестов. Для того, чтобы Вы могли работать с классом CRegKey Вам нужно подключить заголовочный файл.
#include "atlbase.h"
Для элемента редактирования я привязал переменную:
class CTestRegDlg : public CDialog
{
......
// Dialog Data
//{{AFX_DATA(CTestRegDlg)
enum { IDD = IDD_TESTREG_DIALOG };
CString m_Edit;
//}}AFX_DATA
......
Вот код для первой кнопки. По нажатию на нее Вы получите информацию из реестра.
void CTestRegDlg::OnButton1()
{
CRegKey key;
LONG status = key.Open(HKEY_LOCAL_MACHINE, "Config\\0001\\Display\\Settings");
if (status == ERROR_SUCCESS)
{
char setting[255];
DWORD settingSize=sizeof(setting);
status = key.QueryValue(setting, "Resolution", &settingSize);
if (status == ERROR_SUCCESS)
{
CString s(setting);
m_Edit=s;
UpdateData(FALSE);
}
else AfxMessageBox("Not Read Params");
}
else AfxMessageBox("Error Open Key");
key.Close();
}
Что здесь написано ??? Создаем объект класса CRegKey key;, открываем раздел реестра key.Open, если мы смогли это сделать status == ERROR_SUCCESS тогда мы можем получить значение параметров key.QueryValue. Классно и удобно. В этом коде мы получим разрешение экрана в элементе редактирования. В конце объект реестра нужно закрыть key.Close();.
Давайте посмотрим как можно создавать разделы:
void CTestRegDlg::OnButton2()
{
CRegKey key;
LONG status = key.Create(HKEY_CURRENT_USER, "Software\\Step By Step");
if (status == ERROR_SUCCESS)
{
status = key.Create(key.m_hKey,"MFC Step by Step");
if (status == ERROR_SUCCESS)
{
}
else AfxMessageBox("Not Create Params");
}
else AfxMessageBox("Error Create Key");
key.Close();
}
Опять создаем объект класса CRegKey key и создаем раздел реестра key.Create(), если создали if (status == ERROR_SUCCESS), тогда можем создать подраздел key.Create(). Вот так выглядит результат в реестре.

Если провести совершенно общий обзор этого класса так как это шаги, а не подробности :-) То вот главные функции
CRegKey::Open Открыть раздел CRegKey::Create Создать раздел CRegKey::QueryValue Получить значение CRegKey::SetValue Установить значение CRegKey::Close Закрыть раздел